#ifndef BOOSTING_ALGORITHM_H__CMU_
#define BOOSTING_ALGORITHM_H__CMU_

#include "data_structure.h"
#include <string>
using namespace std;

class boosting_algorithm {
public :
	virtual void train_initialization(int & argc, char **& argv){};
	virtual void initialize_distribution(double * d, double * y, int l) = 0;
	virtual double get_alpha(double * y, double * p, double * d, int l) = 0;
	virtual void update_distribution(double alpha, double * y, double * p, int l, double * d_t, double * d_t1) = 0;
	virtual double predict(double * alpha, double * p, int n) = 0;
	virtual bool full_updating() = 0;
	virtual string get_type() = 0;

	virtual ~boosting_algorithm(){}
};

#endif